﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Social.Core.Contracts
{
    /// <summary>
    /// Provides the helper funcionalities to manipulate a Request
    /// </summary>
    public interface IRequestUtils
    {
        /// <summary>
        ///  Gets or Sets a request formatter
        /// </summary>
        /// <remarks>
        /// An IRequestUtils implementation must  provide a mechanisms format a request with an <typeparamref name="Social.Core.Contracts.IRequestFormatter"/>
        /// </remarks>
        /// <see cref="Social.Core.Contracts"/>
        IRequestFormatter RequestFormatter {get; set;}


        ///<summary>
        /// Gets or Sets a deserializer instance
        /// </summary>
        /// <remarks>
        /// An IRequestUtils implementation must  provide a mechanism to deserialize a request response using an <typeparamref name="Social.Core.Contracts.IDeserializer"/>
        /// </remarks>
        /// <see cref="Social.Core.Contracts"/>
        IDeserializer Deserializer { get; set; }
    }
}
